package com.spider.admin.scaffold.service;


import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.spider.admin.scaffold.entity.dto.RoleResourceDTO;
import com.spider.admin.scaffold.entity.model.SystemRole;
import com.spider.admin.scaffold.entity.model.User;
import com.spider.admin.scaffold.entity.param.SystemRoleQueryParam;

import java.util.List;


/**
 * @author xiong.bo
 * @version 1.0
 * @date 2020/11/21 9:50
 */
public interface SystemRoleService extends IService<SystemRole> {

    /**
     * 获取角色列表
     *
     * @param queryParam
     * @return
     */
    Page<SystemRole> selectPage(SystemRoleQueryParam queryParam);

    /**
     * 获取启用状态的角色列表
     *
     * @param queryParam
     * @return
     */
    Page<SystemRole> selectActivePage(SystemRoleQueryParam queryParam);

    /**
     * 查看角色详情
     *
     * @param id
     * @return
     */
    SystemRole findById(Long id);

    /**
     * 新增角色
     *
     * @param role
     * @return
     */
    SystemRole saveRole(SystemRole role);

    /**
     * 修改角色
     * roleCode不能修改，此值用于权限的判断
     *
     * @param role
     * @return
     */
    SystemRole updateRole(SystemRole role);

    /**
     * 角色的启用禁用
     *
     * @param id
     * @param status
     * @return
     */
    Boolean updateStatus(Long id, Integer status);

    /**
     * 删除角色
     *
     * @param ids 角色id字符串
     * @return
     */
    Boolean deleteRole(String ids);

    /**
     * 角色绑定资源
     *
     * @param dto
     * @return
     */
    Boolean bindingRole(RoleResourceDTO dto);

    /**
     * 角色绑定的资源列表
     *
     * @param roleId 角色ID
     * @return
     */
    List<Long> findResourceByRole(Long roleId);

    /**
     * 查看单个角色关联的用户列表-翻页
     *
     * @param queryParam
     * @return
     */
    Page<User> findUsersByRole(SystemRoleQueryParam queryParam);
}
